#include "globals.hh"

class TH3D;

class KSADAnalyzeEvent
{
	public:
				KSADAnalyzeEvent();
		void		Init();
				~KSADAnalyzeEvent();

		void		SetH3(TH3D*);
		TH3D*		GetH3();
		void		SetPossible(bool);
		bool		IsPossible();
		void		AddToMsg(G4String);
		G4String	GetMsg();

		void		SetLeftXPos(double);
		void		SetBottomYPos(double);
		void		SetStartTime(double);
		void		SetAzimuthalAngle(double);
		void		SetAzimuthalLow(double);
		void		SetAzimuthalHigh(double);
		void		SetAzimuthalShift(double);
		void		SetAzimuthalShiftLow(double);
		void		SetAzimuthalShiftHigh(double);
		void		SetPolarAngle(double);
		void		SetPolarLow(double);
		void		SetPolarHigh(double);
		void		SetPolarShift(double);
		void		SetPolarShiftLow(double);
		void		SetPolarShiftHigh(double);
		void		AddEnergy(double);

		void		UpdateXPos();
		void		UpdateYPos();
		double		GetXPos();
		double		GetYPos();
		double		GetPrePolarX();
		double		GetPrePolarY();
		double		GetLeftX();
		double		GetBottomY();
		double		GetStartTime();
		double		GetRightX();
		double		GetTopY();
		double		GetAzimuthalAngle();
		double		GetAzimuthalLow();
		double		GetAzimuthalHigh();
		double		GetAzimuthalShift();
		double		GetAzimuthalShiftLow();
		double		GetAzimuthalShiftHigh();
		double		GetPolarAngle();
		double		GetPolarLow();
		double		GetPolarHigh();
		double		GetPolarShift();
		double		GetPolarShiftLow();
		double		GetPolarShiftHigh();
		double		GetEnergy();
		double		GetCosAzimuthal();
		double		GetSinAzimuthal();

	private:
		TH3D*		h3;
		bool		isPossible;
		G4String	msgString;

		double		leftXPos;
		double		bottomYPos;
		double		startTime;
		double		azimuthalAngle;
		double 		azimuthalLow;
		double		azimuthalHigh;
		double		azimuthalShift;
		double		azimuthalShiftLow;
		double		azimuthalShiftHigh;
		double		polarAngle;
		double		polarLow;
		double		polarHigh;
		double		polarShift;
		double		polarShiftLow;
		double		polarShiftHigh;
		double		energy;
		double		crystalSize;
		double		xPos;
		double		yPos;
		double		cosAzimuthal;
		double		sinAzimuthal;
};
